home *** CD-ROM | disk | FTP | other *** search
/ Amiga Plus 1995 #5 & #6 / Amiga Plus CD - 1995 - No. 5 and 6.iso / tex / macros / latex / general / splain.tex < prev    next >
Text File  |  1992-03-31  |  49KB  |  1,374 lines

  1. % File SPLAIN - Created 29 October 1985 from plain version 1.5CM
  2. %             - Last modified 20 October 1988 to take into account
  3. %               changes to PLAIN.TEX reported by Arthur Ogawa
  4. %             - Modified February 8, 1990 by Dominik Wujastyk to
  5. %               match the PLAIN.TEX meant for TeX 3.0 (\fmtname{plain},
  6. %               \fmtversion{3.0}).
  7. %             - Modified March 15, 1990 by Frank Mittelbach to
  8. %               allow the use of this file both with TeX 2 and 3.
  9. %             - Adapted July 16, 1990 by Rainer M. Sch\"opf from
  10. %               from the modified LPLAIN.TEX that can be used both
  11. %               with TeX 2 and 3.
  12. %             - Modified June 21, 1991 by RmS to clear the contents
  13. %               of \box0.
  14. %             - Modified July 1, 1991, by RmS to correct \multispan bug.
  15. %             - Modified August 14, 1991, By RmS to make \cases work
  16. %               with NFSS.
  17. %             - Modified October 30, 1991, by RmS to remove \catcode and
  18. %               \mathcode assignments for control characters.
  19. %             - Modified November 1, 1991, by RmS to remove ^^A and ^^K
  20. %               control characters.
  21. %             - Modified November 4, 1991, by RmS to add missing \m@th
  22. %               assignments and to introduce the file lhyphen.tex.
  23. %             - Modified November 7, 1991, by RmS to make it work with
  24. %               MLTeX version 2.
  25. %             - Modified March 17, 1992, by RmS to match changes in
  26. %               plain.tex of March 16, 1992.
  27. %
  28. %
  29. % This is the SliTeX version of the plain TeX format that's described in
  30. % The TeXbook.  All modifications can be found by searching for
  31. % the word 'LaTeX' or 'SliTeX'.
  32. % N.B.: A version number is defined at the very end of this file;
  33. %       please change that number whenever the file is modified!
  34. % And don't modify the file under any circumstances.
  35. %
  36. %% \CharacterTable
  37. %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  38. %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
  39. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  40. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  41. %%   Dollar        \$     Percent       \%     Ampersand     \&
  42. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  43. %%   Asterisk      \*     Plus          \+     Comma         \,
  44. %%   Minus         \-     Point         \.     Solidus       \/
  45. %%   Colon         \:     Semicolon     \;     Less than     \<
  46. %%   Equals        \=     Greater than  \>     Question mark \?
  47. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  48. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  49. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  50. %%   Right brace   \}     Tilde         \~}
  51. %%
  52.  
  53. \catcode`\{=1 % left brace is begin-group character
  54. \catcode`\}=2 % right brace is end-group character
  55. \catcode`\$=3 % dollar sign is math shift
  56. \catcode`\&=4 % ampersand is alignment tab
  57. \catcode`\#=6 % hash mark is macro parameter character
  58. \catcode`\^=7 % circumflex and uparrow are for superscripts
  59. \catcode`\_=8 % underline and downarrow are for subscripts
  60. \catcode`\^^I=10 % ascii tab is a blank space
  61. \chardef\active=13 \catcode`\~=\active % tilde is active
  62. \catcode`\^^L=\active \outer\def^^L{\par} % ascii form-feed is "\outer\par"
  63.  
  64. \message{Preloading the plain format: codes,}
  65.  
  66. % We had to define the \catcodes right away, before the message line,
  67. % since \message uses the { and } characters.
  68. % When INITEX (the TeX initializer) starts up,
  69. % it has defined the following \catcode values:
  70. % \catcode`\^^@=9 % ascii null is ignored
  71. % \catcode`\^^M=5 % ascii return is end-line
  72. % \catcode`\\=0 % backslash is TeX escape character
  73. % \catcode`\%=14 % percent sign is comment character
  74. % \catcode`\ =10 % ascii space is blank space
  75. % \catcode`\^^?=15 % ascii delete is invalid
  76. % \catcode`\A=11 ... \catcode`\Z=11 % uppercase letters
  77. % \catcode`\a=11 ... \catcode`\z=11 % lowercase letters
  78. % all others are type 12 (other)
  79.  
  80. % Here is a list of the characters that have been specially catcoded:
  81. \def\dospecials{\do\ \do\\\do\{\do\}\do\$\do\&%
  82.   \do\#\do\^\do\_\do\%\do\~}
  83. % (not counting ascii null, tab, linefeed, formfeed, return, delete)
  84. % Each symbol in the list is preceded by \do, which can be defined
  85. % if you want to do something to every item in the list.
  86.  
  87. % We make @ signs act like letters, temporarily, to avoid conflict
  88. % between user names and internal control sequences of plain format.
  89. \catcode`@=11
  90.  
  91. % INITEX sets up \mathcode x=x, for x=0..255, except that
  92. % \mathcode x=x+"7100, for x = `A to `Z and `a to `z;
  93. % \mathcode x=x+"7000, for x = `0 to `9.
  94. % The following changes define internal codes as recommended
  95. % in Appendix C of The TeXbook:
  96. \mathcode`\ ="8000 % \space
  97. \mathcode`\!="5021
  98. \mathcode`\'="8000 % ^\prime
  99. \mathcode`\(="4028
  100. \mathcode`\)="5029
  101. \mathcode`\*="2203 % \ast
  102. \mathcode`\+="202B
  103. \mathcode`\,="613B
  104. \mathcode`\-="2200
  105. \mathcode`\.="013A
  106. \mathcode`\/="013D
  107. \mathcode`\:="303A
  108. \mathcode`\;="603B
  109. \mathcode`\<="313C
  110. \mathcode`\=="303D
  111. \mathcode`\>="313E
  112. \mathcode`\?="503F
  113. \mathcode`\[="405B
  114. \mathcode`\\="026E % \backslash
  115. \mathcode`\]="505D
  116. \mathcode`\_="8000 % \_
  117. \mathcode`\{="4266
  118. \mathcode`\|="026A
  119. \mathcode`\}="5267
  120.  
  121. % INITEX sets \uccode`x=`X and \uccode `X=`X for all letters x,
  122. % and \lccode`x=`x, \lccode`X=`x; all other values are zero.
  123. % No changes to those tables are needed in plain TeX format.
  124.  
  125. % INITEX sets \sfcode x=1000 for all x, except that \sfcode`X=999
  126. % for uppercase letters. The following changes are needed:
  127. \sfcode`\)=0 \sfcode`\'=0 \sfcode`\]=0
  128. % The \nonfrenchspacing macro will make further changes to \sfcode values.
  129.  
  130. % Finally, INITEX sets all \delcode values to -1, except \delcode`.=0
  131. \delcode`\(="028300
  132. \delcode`\)="029301
  133. \delcode`\[="05B302
  134. \delcode`\]="05D303
  135. \delcode`\<="26830A
  136. \delcode`\>="26930B
  137. \delcode`\/="02F30E
  138. \delcode`\|="26A30C
  139. \delcode`\\="26E30F
  140. % N.B. { and } should NOT get delcodes; otherwise parameter grouping fails!
  141.  
  142. % To make the plain macros more efficient in time and space,
  143. % several constant values are declared here as control sequences.
  144. % If they were changed, anything could happen; so they are private symbols.
  145. \chardef\@ne=1
  146. \chardef\tw@=2
  147. \chardef\thr@@=3
  148. \chardef\sixt@@n=16
  149. \chardef\@cclv=255
  150. \mathchardef\@cclvi=256
  151. \mathchardef\@m=1000
  152. \mathchardef\@M=10000
  153. \mathchardef\@MM=20000
  154.  
  155. % Allocation of registers
  156.  
  157. % Here are macros for the automatic allocation of \count, \box, \dimen,
  158. % \skip, \muskip, and \toks registers, as well as \read and \write
  159. % stream numbers, \fam codes, \language codes, and \insert numbers.
  160.  
  161. \message{registers,}
  162.  
  163. % When a register is used only temporarily, it need not be allocated;
  164. % grouping can be used, making the value previously in the register return
  165. % after the close of the group.  The main use of these macros is for
  166. % registers that are defined by one macro and used by others, possibly at
  167. % different nesting levels.  All such registers should be defined through
  168. % these macros; otherwise conflicts may occur, especially when two or more
  169. % more macro packages are being used at once.
  170.  
  171. % The following counters are reserved:
  172. %   0 to 9  page numbering
  173. %       10  count allocation
  174. %       11  dimen allocation
  175. %       12  skip allocation
  176. %       13  muskip allocation
  177. %       14  box allocation
  178. %       15  toks allocation
  179. %       16  read file allocation
  180. %       17  write file allocation
  181. %       18  math family allocation
  182. %       19  language allocation
  183. %       20  insert allocation
  184. %       21  the most recently allocated number
  185. %       22  constant -1
  186. % New counters are allocated starting with 23, 24, etc.  Other registers are
  187. % allocated starting with 10.  This leaves 0 through 9 for the user to play
  188. % with safely, except that counts 0 to 9 are considered to be the page and
  189. % subpage numbers (since they are displayed during output). In this scheme,
  190. % \count 10 always contains the number of the highest-numbered counter that
  191. % has been allocated, \count 14 the highest-numbered box, etc.
  192. % Inserts are given numbers 254, 253, etc., since they require a \count,
  193. % \dimen, \skip, and \box all with the same number; \count 20 contains the
  194. % lowest-numbered insert that has been allocated. Of course, \box255 is
  195. % reserved for \output; \count255, \dimen255, and \skip255 can be used freely.
  196.  
  197. % It is recommended that macro designers always use
  198. % \global assignments with respect to registers numbered 1, 3, 5, 7, 9, and
  199. % always non-\global assignments with respect to registers 0, 2, 4, 6, 8, 255.
  200. % This will prevent ``save stack buildup'' that might otherwise occur.
  201.  
  202. \count10=22 % allocates \count registers 23, 24, ...
  203. \count11=9 % allocates \dimen registers 10, 11, ...
  204. \count12=9 % allocates \skip registers 10, 11, ...
  205. \count13=9 % allocates \muskip registers 10, 11, ...
  206. \count14=9 % allocates \box registers 10, 11, ...
  207. \count15=9 % allocates \toks registers 10, 11, ...
  208. \count16=-1 % allocates input streams 0, 1, ...
  209. \count17=-1 % allocates output streams 0, 1, ...
  210. \count18=3 % allocates math families 4, 5, ...
  211. \count19=0 % allocates \language codes 1, 2, ...
  212. \count20=255 % allocates insertions 254, 253, ...
  213. \countdef\insc@unt=20 % the insertion counter
  214. \countdef\allocationnumber=21 % the most recent allocation
  215. \countdef\m@ne=22 \m@ne=-1 % a handy constant
  216. \def\wlog{\immediate\write\m@ne} % write on log file (only)
  217.  
  218. % Here are abbreviations for the names of scratch registers
  219. % that don't need to be allocated.
  220.  
  221. \countdef\count@=255
  222. \dimendef\dimen@=0
  223. \dimendef\dimen@i=1 % global only
  224. \dimendef\dimen@ii=2
  225. \skipdef\skip@=0
  226. \toksdef\toks@=0
  227.  
  228. % Now, we define \newcount, \newbox, etc. so that you can say \newcount\foo
  229. % and \foo will be defined (with \countdef) to be the next counter.
  230. % To find out which counter \foo is, you can look at \allocationnumber.
  231. % Since there's no \boxdef command, \chardef is used to define a \newbox,
  232. % \newinsert, \newfam, and so on.
  233. % LaTeX change: remove \outer from \newcount and \newdimen (FMi)
  234. %               This is necessary to use \newcount inside \if...
  235. %               later on.
  236.  
  237. \def\newcount{\alloc@0\count\countdef\insc@unt}
  238. \def\newdimen{\alloc@1\dimen\dimendef\insc@unt}
  239. \outer\def\newskip{\alloc@2\skip\skipdef\insc@unt}
  240. \outer\def\newmuskip{\alloc@3\muskip\muskipdef\@cclvi}
  241. \outer\def\newbox{\alloc@4\box\chardef\insc@unt}
  242. \let\newtoks=\relax % we do this to allow plain.tex to be read in twice
  243. \outer\def\newhelp#1#2{\newtoks#1#1\expandafter{\csname#2\endcsname}}
  244. \outer\def\newtoks{\alloc@5\toks\toksdef\@cclvi}
  245. \outer\def\newread{\alloc@6\read\chardef\sixt@@n}
  246. \outer\def\newwrite{\alloc@7\write\chardef\sixt@@n}
  247. \outer\def\newfam{\alloc@8\fam\chardef\sixt@@n}
  248. \outer\def\newlanguage{\alloc@9\language\chardef\@cclvi}
  249. \def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne
  250.   \ch@ck#1#4#2% make sure there's still room
  251.   \allocationnumber=\count1#1%
  252.   \global#3#5=\allocationnumber
  253.   \wlog{\string#5=\string#2\the\allocationnumber}}
  254. \outer\def\newinsert#1{\global\advance\insc@unt by\m@ne
  255.   \ch@ck0\insc@unt\count
  256.   \ch@ck1\insc@unt\dimen
  257.   \ch@ck2\insc@unt\skip
  258.   \ch@ck4\insc@unt\box
  259.   \allocationnumber=\insc@unt
  260.   \global\chardef#1=\allocationnumber
  261.   \wlog{\string#1=\string\insert\the\allocationnumber}}
  262. \def\ch@ck#1#2#3{\ifnum\count1#1<#2%
  263.   \else\errmessage{No room for a new #3}\fi}
  264.  
  265. % Here are some examples of allocation.
  266. \newdimen\maxdimen \maxdimen=16383.99999pt % the largest legal <dimen>
  267. \newskip\hideskip \hideskip=-1000pt plus 1fill % negative but can grow
  268.  
  269. % LaTeX change: the PLAIN \centering dimension conflicts with
  270. % LaTeX's \centering command, so it is redefined to \@centering.
  271. % This dimension is used by LaTeX.
  272.  
  273. \newskip\@centering \@centering=0pt plus 1000pt minus 1000pt
  274.  
  275. \newdimen\p@ \p@=1pt % this saves macro space and time
  276. \newdimen\z@ \z@=0pt % can be used both for 0pt and 0
  277. \newskip\z@skip \z@skip=0pt plus0pt minus0pt
  278. \newbox\voidb@x % permanently void box register
  279.  
  280. % And here's a different sort of allocation:
  281. % For example, \newif\iffoo creates \footrue, \foofalse to go with \iffoo.
  282. \outer\def\newif#1{\count@\escapechar \escapechar\m@ne
  283.   \expandafter\expandafter\expandafter
  284.    \edef\@if#1{true}{\let\noexpand#1=\noexpand\iftrue}%
  285.   \expandafter\expandafter\expandafter
  286.    \edef\@if#1{false}{\let\noexpand#1=\noexpand\iffalse}%
  287.   \@if#1{false}\escapechar\count@} % the condition starts out false
  288. \def\@if#1#2{\csname\expandafter\if@\string#1#2\endcsname}
  289. {\uccode`1=`i \uccode`2=`f \uppercase{\gdef\if@12{}}} % `if' is required
  290.  
  291. \message{compatibility for TeX 2, }
  292.  
  293. % If this file is used in an old TeX we define the new features
  294. % of TeX 3.0 as simple macros or counters so that files that uses
  295. % these features can be processed in such an environment
  296. % (They will however produce some other results).
  297.  
  298. \ifx\undefined\inputlineno
  299.   \newcount\inputlineno
  300.   \inputlineno-1               % this could be used to detect that
  301.                                % an old TeX is in force
  302.   \ifx\undefined\language      % extra test for MLTeX 2, RmS 91/11/07
  303.     \newcount\language
  304.   \fi
  305.   \newcount\lefthyphenmin
  306.   \newcount\righthyphenmin
  307.   \newcount\errorcontextlines
  308.   \newcount\holdinginserts
  309.   \newdimen\emergencystretch
  310.   \newcount\badness
  311.   \let\noboundary\relax
  312.   \newcount\setlanguage
  313. \fi
  314.  
  315. % Assign initial values to TeX's parameters
  316.  
  317. \message{parameters,}
  318.  
  319. % All of TeX's numeric parameters are listed here,
  320. % but the code is commented out if no special value needs to be set.
  321. % INITEX makes all parameters zero except where noted.
  322.  
  323. \pretolerance=100
  324. \tolerance=200 % INITEX sets this to 10000
  325. \hbadness=1000
  326. \vbadness=1000
  327. \linepenalty=10
  328. \hyphenpenalty=50
  329. \exhyphenpenalty=50
  330. \binoppenalty=700
  331. \relpenalty=500
  332. \clubpenalty=150
  333. \widowpenalty=150
  334. \displaywidowpenalty=50
  335. \brokenpenalty=100
  336. \predisplaypenalty=10000
  337. % \postdisplaypenalty=0
  338. % \interlinepenalty=0
  339. % \floatingpenalty=0, set during \insert
  340. % \outputpenalty=0, set before TeX enters \output
  341. \doublehyphendemerits=10000
  342. \finalhyphendemerits=5000
  343. \adjdemerits=10000
  344. % \looseness=0, cleared by TeX after each paragraph
  345. % \pausing=0
  346. % \holdinginserts=0
  347. % \tracingonline=0
  348. % \tracingmacros=0
  349. % \tracingstats=0
  350. % \tracingparagraphs=0
  351. % \tracingpages=0
  352. % \tracingoutput=0
  353. \tracinglostchars=1
  354. % \tracingcommands=0
  355. % \tracingrestores=0
  356. % \language=0
  357. \uchyph=1
  358. % \lefthyphenmin=2 \righthyphenmin=3 set below
  359. % \globaldefs=0
  360. % \maxdeadcycles=25 % INITEX does this
  361. % \hangafter=1 % INITEX does this, also TeX after each paragraph
  362. % \fam=0
  363. % \mag=1000 % INITEX does this
  364. % \escapechar=`\\ % INITEX does this
  365. \defaulthyphenchar=`\-
  366. \defaultskewchar=-1
  367. % \endlinechar=`\^^M % INITEX does this
  368. \newlinechar=-1
  369. \delimiterfactor=901
  370. % \time=now % TeX does this at beginning of job
  371. % \day=now % TeX does this at beginning of job
  372. % \month=now % TeX does this at beginning of job
  373. % \year=now % TeX does this at beginning of job
  374. \showboxbreadth=5
  375. \showboxdepth=3
  376. \errorcontextlines=5
  377.  
  378. \hfuzz=0.1pt
  379. \vfuzz=0.1pt
  380. \overfullrule=5pt
  381. \hsize=6.5in
  382. \vsize=8.9in
  383. \maxdepth=4pt
  384. \splitmaxdepth=\maxdimen
  385. \boxmaxdepth=\maxdimen
  386. % \lineskiplimit=0pt, changed by \normalbaselines
  387. \delimitershortfall=5pt
  388. \nulldelimiterspace=1.2pt
  389. \scriptspace=0.5pt
  390. % \mathsurround=0pt
  391. % \predisplaysize=0pt, set before TeX enters $$
  392. % \displaywidth=0pt, set before TeX enters $$
  393. % \displayindent=0pt, set before TeX enters $$
  394. \parindent=20pt
  395. % \hangindent=0pt, zeroed by TeX after each paragraph
  396. % \hoffset=0pt
  397. % \voffset=0pt
  398.  
  399. % \baselineskip=0pt, changed by \normalbaselines
  400. % \lineskip=0pt, changed by \normalbaselines
  401. \parskip=0pt plus 1pt
  402. \abovedisplayskip=12pt plus 3pt minus 9pt
  403. \abovedisplayshortskip=0pt plus 3pt
  404. \belowdisplayskip=12pt plus 3pt minus 9pt
  405. \belowdisplayshortskip=7pt plus 3pt minus 4pt
  406. % \leftskip=0pt
  407. % \rightskip=0pt
  408. \topskip=10pt
  409. \splittopskip=10pt
  410. % \tabskip=0pt
  411. % \spaceskip=0pt
  412. % \xspaceskip=0pt
  413. \parfillskip=0pt plus 1fil
  414.  
  415. \thinmuskip=3mu
  416. \medmuskip=4mu plus 2mu minus 4mu
  417. \thickmuskip=5mu plus 5mu
  418.  
  419. % We also define special registers that function like parameters:
  420. \newskip\smallskipamount \smallskipamount=3pt plus 1pt minus 1pt
  421. \newskip\medskipamount \medskipamount=6pt plus 2pt minus 2pt
  422. \newskip\bigskipamount \bigskipamount=12pt plus 4pt minus 4pt
  423. \newskip\normalbaselineskip \normalbaselineskip=12pt
  424. \newskip\normallineskip \normallineskip=1pt
  425. \newdimen\normallineskiplimit \normallineskiplimit=0pt
  426. \newdimen\jot \jot=3pt
  427. \newcount\interdisplaylinepenalty \interdisplaylinepenalty=100
  428. \newcount\interfootnotelinepenalty \interfootnotelinepenalty=100
  429.  
  430. % Definitions for preloaded fonts
  431.  
  432. \def\magstephalf{1095 }
  433. \def\magstep#1{\ifcase#1 \@m\or 1200\or 1440\or 1728\or 2074\or 2488\fi\relax}
  434.  
  435. % Fonts assigned to \preloaded are not part of "plain TeX",
  436. % but they are preloaded so that other format packages can use them.
  437. % For example, if another set of macros says "\font\ninerm=cmr9",
  438. % TeX will not have to reload the font metric information for cmr9.
  439.  
  440. % SLiTeX font definitions are taken from the file SFONTS.TEX,
  441. % so all of PLAIN's font definitions are commented out.
  442.  
  443. %\message{fonts,}
  444. %
  445. %\font\tenrm=cmr10 % roman text
  446. %\font\preloaded=cmr9
  447. %\font\preloaded=cmr8
  448. %\font\sevenrm=cmr7
  449. %\font\preloaded=cmr6
  450. %\font\fiverm=cmr5
  451. %
  452. %\font\teni=cmmi10 % math italic
  453. %\font\preloaded=cmmi9
  454. %\font\preloaded=cmmi8
  455. %\font\seveni=cmmi7
  456. %\font\preloaded=cmmi6
  457. %\font\fivei=cmmi5
  458. %
  459. %\font\tensy=cmsy10 % math symbols
  460. %\font\preloaded=cmsy9
  461. %\font\preloaded=cmsy8
  462. %\font\sevensy=cmsy7
  463. %\font\preloaded=cmsy6
  464. %\font\fivesy=cmsy5
  465. %
  466. %\font\tenex=cmex10 % math extension
  467. %
  468. %\font\preloaded=cmss10 % sans serif
  469. %\font\preloaded=cmssq8
  470. %
  471. %\font\preloaded=cmssi10 % sans serif italic
  472. %\font\preloaded=cmssqi8
  473. %
  474. %\font\tenbf=cmbx10 % boldface extended
  475. %\font\preloaded=cmbx9
  476. %\font\preloaded=cmbx8
  477. %\font\sevenbf=cmbx7
  478. %\font\preloaded=cmbx6
  479. %\font\fivebf=cmbx5
  480. %
  481. %\font\tentt=cmtt10 % typewriter
  482. %\font\preloaded=cmtt9
  483. %\font\preloaded=cmtt8
  484. %
  485. %\font\preloaded=cmsltt10 % slanted typewriter
  486. %
  487. %\font\tensl=cmsl10 % slanted roman
  488. %\font\preloaded=cmsl9
  489. %\font\preloaded=cmsl8
  490. %
  491. %\font\tenit=cmti10 % text italic
  492. %\font\preloaded=cmti9
  493. %\font\preloaded=cmti8
  494. %\font\preloaded=cmti7
  495. %
  496. %\message{more fonts,}
  497. %\font\preloaded=cmu10 % unslanted text italic
  498. %
  499. %\font\preloaded=cmmib10 % bold math italic
  500. %\font\preloaded=cmbsy10 % bold math symbols
  501. %
  502. %\font\preloaded=cmcsc10 % caps and small caps
  503. %
  504. %\font\preloaded=cmssbx10 % sans serif bold extended
  505. %
  506. %\font\preloaded=cmdunh10 % Dunhill style
  507. %
  508. %\font\preloaded=cmr7 scaled \magstep4 % for titles
  509. %\font\preloaded=cmtt10 scaled \magstep2
  510. %\font\preloaded=cmssbx10 scaled \magstep2
  511. %
  512. %\font\preloaded=manfnt % METAFONT logo and dragon curve and special symbols
  513. %
  514. %% Additional \preloaded fonts can be specified here.
  515. %% (And those that were \preloaded above can be eliminated.)
  516. %
  517. %\let\preloaded=\undefined % preloaded fonts must be declared anew later.
  518. %
  519. %\skewchar\teni='177 \skewchar\seveni='177 \skewchar\fivei='177
  520. %\skewchar\tensy='60 \skewchar\sevensy='60 \skewchar\fivesy='60
  521. %
  522. %\textfont0=\tenrm \scriptfont0=\sevenrm \scriptscriptfont0=\fiverm
  523. %\def\rm{\fam\z@\tenrm}
  524. %\textfont1=\teni \scriptfont1=\seveni \scriptscriptfont1=\fivei
  525. %\def\mit{\fam\@ne} \def\oldstyle{\fam\@ne\teni}
  526. %\textfont2=\tensy \scriptfont2=\sevensy \scriptscriptfont2=\fivesy
  527. %\def\cal{\fam\tw@}
  528. %\textfont3=\tenex \scriptfont3=\tenex \scriptscriptfont3=\tenex
  529. %\newfam\itfam \def\it{\fam\itfam\tenit} % \it is family 4
  530. %\textfont\itfam=\tenit
  531. %\newfam\slfam \def\sl{\fam\slfam\tensl} % \sl is family 5
  532. %\textfont\slfam=\tensl
  533. %\newfam\bffam \def\bf{\fam\bffam\tenbf} % \bf is family 6
  534. %\textfont\bffam=\tenbf \scriptfont\bffam=\sevenbf
  535. %\scriptscriptfont\bffam=\fivebf
  536. %\newfam\ttfam \def\tt{\fam\ttfam\tentt} % \tt is family 7
  537. %\textfont\ttfam=\tentt
  538.  
  539. % Macros for setting ordinary text
  540. \message{macros,}
  541.  
  542. \def\frenchspacing{\sfcode`\.\@m \sfcode`\?\@m \sfcode`\!\@m
  543.   \sfcode`\:\@m \sfcode`\;\@m \sfcode`\,\@m}
  544. \def\nonfrenchspacing{\sfcode`\.3000\sfcode`\?3000\sfcode`\!3000%
  545.   \sfcode`\:2000\sfcode`\;1500\sfcode`\,1250 }
  546.  
  547. \def\normalbaselines{\lineskip\normallineskip
  548.   \baselineskip\normalbaselineskip \lineskiplimit\normallineskiplimit}
  549.  
  550. \def\^^M{\ } % control <return> = control <space>
  551. \def\^^I{\ } % same for <tab>
  552.  
  553. \def\lq{`} \def\rq{'}
  554. \def\lbrack{[} \def\rbrack{]}
  555.  
  556. \let\endgraf=\par \let\endline=\cr
  557.  
  558. \def\space{ }
  559. \def\empty{}
  560. \def\null{\hbox{}}
  561.  
  562. \let\bgroup={ \let\egroup=}
  563.  
  564. % In \obeylines, we say `\let^^M=\par' instead of `\def^^M{\par}'
  565. % since this allows, for example, `\let\par=\cr \obeylines \halign{...'
  566. {\catcode`\^^M=\active % these lines must end with %
  567.   \gdef\obeylines{\catcode`\^^M\active \let^^M\par}%
  568.   \global\let^^M\par} % this is in case ^^M appears in a \write
  569. \def\obeyspaces{\catcode`\ \active}
  570. {\obeyspaces\global\let =\space}
  571.  
  572. \def\loop#1\repeat{\def\body{#1}\iterate}
  573. \def\iterate{\body \let\next\iterate \else\let\next\relax\fi \next}
  574. \let\repeat=\fi % this makes \loop...\if...\repeat skippable
  575.  
  576. \def\thinspace{\kern .16667em }
  577. \def\negthinspace{\kern-.16667em }
  578. \def\enspace{\kern.5em }
  579.  
  580. \def\enskip{\hskip.5em\relax}
  581. \def\quad{\hskip1em\relax}
  582. \def\qquad{\hskip2em\relax}
  583.  
  584. \def\smallskip{\vskip\smallskipamount}
  585. \def\medskip{\vskip\medskipamount}
  586. \def\bigskip{\vskip\bigskipamount}
  587.  
  588. \def\nointerlineskip{\prevdepth-1000\p@}
  589. \def\offinterlineskip{\baselineskip-1000\p@
  590.   \lineskip\z@ \lineskiplimit\maxdimen}
  591.  
  592. \def\vglue{\afterassignment\vgl@\skip@=}
  593. \def\vgl@{\par \dimen@\prevdepth \hrule height\z@
  594.   \nobreak\vskip\skip@ \prevdepth\dimen@}
  595. \def\hglue{\afterassignment\hgl@\skip@=}
  596. \def\hgl@{\leavevmode \count@\spacefactor \vrule width\z@
  597.   \nobreak\hskip\skip@ \spacefactor\count@}
  598.  
  599. \def~{\penalty\@M \ } % tie
  600. \def\slash{/\penalty\exhyphenpenalty} % a `/' that acts like a `-'
  601.  
  602. \def\break{\penalty-\@M}
  603. \def\nobreak{\penalty \@M}
  604. \def\allowbreak{\penalty \z@}
  605.  
  606. \def\filbreak{\par\vfil\penalty-200\vfilneg}
  607. \def\goodbreak{\par\penalty-500 }
  608. \def\eject{\par\break}
  609. \def\supereject{\par\penalty-\@MM}
  610.  
  611. \def\removelastskip{\ifdim\lastskip=\z@\else\vskip-\lastskip\fi}
  612. \def\smallbreak{\par\ifdim\lastskip<\smallskipamount
  613.   \removelastskip\penalty-50\smallskip\fi}
  614. \def\medbreak{\par\ifdim\lastskip<\medskipamount
  615.   \removelastskip\penalty-100\medskip\fi}
  616. \def\bigbreak{\par\ifdim\lastskip<\bigskipamount
  617.   \removelastskip\penalty-200\bigskip\fi}
  618.  
  619. % \line changed to \@@line because LaTeX redefines \line
  620. \def\@@line{\hbox to\hsize}
  621. \def\leftline#1{\@@line{#1\hss}}
  622. \def\rightline#1{\@@line{\hss#1}}
  623. \def\centerline#1{\@@line{\hss#1\hss}}
  624. % end of LaTeX \line -> \@@line change
  625.  
  626. \def\rlap#1{\hbox to\z@{#1\hss}}
  627. \def\llap#1{\hbox to\z@{\hss#1}}
  628.  
  629. \def\m@th{\mathsurround=\z@}
  630. \def\underbar#1{$\setbox\z@\hbox{#1}\dp\z@\z@
  631.   \m@th \underline{\box\z@}$}
  632.  
  633. \newbox\strutbox
  634. \setbox\strutbox=\hbox{\vrule height8.5pt depth3.5pt width\z@}
  635. \def\strut{\relax\ifmmode\copy\strutbox\else\unhcopy\strutbox\fi}
  636.  
  637. \def\hidewidth{\hskip\hideskip} % for alignment entries that can stick out
  638. \def\ialign{\everycr{}\tabskip\z@skip\halign} % initialized \halign
  639. \newcount\mscount
  640. \def\multispan#1{\omit \mscount#1\relax
  641.   \loop\ifnum\mscount>\@ne \sp@n\repeat}
  642. \def\sp@n{\span\omit\advance\mscount\m@ne}
  643.  
  644. % LaTeX has its own tabbing environment, so PLAIN's is disabled.
  645. %
  646. %\newif\ifus@ \newif\if@cr
  647. %\newbox\tabs \newbox\tabsyet \newbox\tabsdone
  648. %
  649. %\def\cleartabs{\global\setbox\tabsyet\null \setbox\tabs\null}
  650. %\def\settabs{\setbox\tabs\null \futurelet\next\sett@b}
  651. %\let\+=\relax % in case this file is being read in twice
  652. %\def\sett@b{\ifx\next\+\let\next\relax
  653. %    \def\next{\afterassignment\s@tt@b\let\next}%
  654. %  \else\let\next\s@tcols\fi\next}
  655. %\def\s@tt@b{\let\next\relax\us@false\m@ketabbox}
  656. %\def\tabalign{\us@true\m@ketabbox} % non-\outer version of \+
  657. %\outer\def\+{\tabalign}
  658. %\def\s@tcols#1\columns{\count@#1 \dimen@\hsize
  659. %  \loop\ifnum\count@>\z@ \@nother \repeat}
  660. %\def\@nother{\dimen@ii\dimen@ \divide\dimen@ii\count@
  661. %  \setbox\tabs\hbox{\hbox to\dimen@ii{}\unhbox\tabs}%
  662. %  \advance\dimen@-\dimen@ii \advance\count@\m@ne}
  663. %
  664. %\def\m@ketabbox{\begingroup
  665. %  \global\setbox\tabsyet\copy\tabs
  666. %  \global\setbox\tabsdone\null
  667. %  \def\cr{\@crtrue\crcr\egroup\egroup
  668. %    \ifus@\unvbox\z@\lastbox\fi\endgroup
  669. %    \setbox\tabs\hbox{\unhbox\tabsyet\unhbox\tabsdone}}%
  670. %  \setbox\z@\vbox\bgroup\@crfalse
  671. %    \ialign\bgroup&\t@bbox##\t@bb@x\crcr}
  672. %
  673. %\def\t@bbox{\setbox\z@\hbox\bgroup}
  674. %\def\t@bb@x{\if@cr\egroup % now \box\z@ holds the column
  675. %  \else\hss\egroup \global\setbox\tabsyet\hbox{\unhbox\tabsyet
  676. %      \global\setbox\@ne\lastbox}% now \box\@ne holds its size
  677. %    \ifvoid\@ne\global\setbox\@ne\hbox to\wd\z@{}%
  678. %    \else\setbox\z@\hbox to\wd\@ne{\unhbox\z@}\fi
  679. %    \global\setbox\tabsdone\hbox{\box\@ne\unhbox\tabsdone}\fi
  680. %  \box\z@}
  681.  
  682. \def\hang{\hangindent\parindent}
  683. \def\textindent#1{\indent\llap{#1\enspace}\ignorespaces}
  684. \def\item{\par\hang\textindent}
  685. %% RmS 92/03/18: Removed \itemitem since never needed/useful in SLiTeX.
  686. %\def\itemitem{\par\indent \hangindent2\parindent \textindent}
  687. \def\narrower{\advance\leftskip\parindent
  688.   \advance\rightskip\parindent}
  689.  
  690. % LaTeX has its own sectioning macros
  691. %\outer\def\beginsection#1\par{\vskip\z@ plus.3\vsize\penalty-250
  692. %  \vskip\z@ plus-.3\vsize\bigskip\vskip\parskip
  693. %  \message{#1}\leftline{\bf#1}\nobreak\smallskip\noindent}
  694.  
  695. \outer\def\proclaim #1. #2\par{\medbreak
  696.   \noindent{\bf#1.\enspace}{\sl#2\par}%
  697.   \ifdim\lastskip<\medskipamount \removelastskip\penalty55\medskip\fi}
  698.  
  699. \def\raggedright{\rightskip\z@ plus2em \spaceskip.3333em \xspaceskip.5em\relax}
  700. \def\ttraggedright{\tt\rightskip\z@ plus2em\relax} % for use with \tt only
  701.  
  702. \chardef\%=`\%
  703. \chardef\&=`\&
  704. \chardef\#=`\#
  705. \chardef\$=`\$
  706. \chardef\ss="19
  707. \chardef\ae="1A
  708. \chardef\oe="1B
  709. \chardef\o="1C
  710. \chardef\AE="1D
  711. \chardef\OE="1E
  712. \chardef\O="1F
  713. \chardef\i="10 \chardef\j="11 % dotless letters
  714. \def\aa{\accent23a}
  715. \def\l{\char32l}
  716. \def\L{\leavevmode\setbox0\hbox{L}\hbox to\wd0{\hss\char32L}}
  717.  
  718. \def\leavevmode{\unhbox\voidb@x} % begins a paragraph, if necessary
  719. \def\_{\leavevmode \kern.06em \vbox{\hrule width.3em}}
  720. \def\AA{\leavevmode\setbox0\hbox{h}\dimen@\ht0\advance\dimen@-1ex%
  721.   \rlap{\raise.67\dimen@\hbox{\char'27}}A}
  722.  
  723. \def\mathhexbox#1#2#3{\leavevmode
  724.   \hbox{$\m@th \mathchar"#1#2#3$}}
  725. \def\dag{\mathhexbox279}
  726. \def\ddag{\mathhexbox27A}
  727. \def\S{\mathhexbox278}
  728. \def\P{\mathhexbox27B}
  729.  
  730. \def\oalign#1{\leavevmode\vtop{\baselineskip\z@skip \lineskip.25ex%
  731.   \ialign{##\crcr#1\crcr}}} % put characters over each other
  732. \def\ooalign{\lineskiplimit-\maxdimen \oalign}
  733.  
  734. % LaTeX change: \d, \b, \c redefined to work in a moving argument.
  735. \def\pd#1{\oalign{#1\crcr\hidewidth.\hidewidth}}
  736. \def\d{\protect\pd}
  737.  
  738. \def\pb#1{\oalign{#1\crcr\hidewidth
  739.     \vbox to.2ex{\hbox{\char22}\vss}\hidewidth}}
  740. \def\b{\protect\pb}
  741.  
  742. \def\pc#1{\setbox\z@\hbox{#1}\ifdim\ht\z@=1ex\accent24 #1%
  743.   \else{\ooalign{\unhbox\z@\crcr\hidewidth\char24\hidewidth}}\fi}
  744. \def\c{\protect\pc}
  745. % end of LaTeX change to \d, \b, \c
  746.  
  747. \def\copyright{{\ooalign{\hfil\raise.07ex\hbox{c}\hfil\crcr\mathhexbox20D}}}
  748.  
  749. % LaTeX change: \ldots is redefined to do essentially what Plain's \dots does,
  750. % so ...
  751. \def\dots{\ldots}
  752.  
  753. \def\TeX{T\kern-.1667em\lower.5ex\hbox{E}\kern-.125emX}
  754.  
  755. \def\`#1{{\accent18 #1}}
  756. \def\'#1{{\accent19 #1}}
  757. \def\v#1{{\accent20 #1}} \let\^^_=\v
  758. \def\u#1{{\accent21 #1}} \let\^^S=\u
  759. \def\=#1{{\accent22 #1}}
  760. \def\^#1{{\accent94 #1}} \let\^^D=\^
  761. \def\.#1{{\accent95 #1}}
  762. \def\H#1{{\accent"7D #1}}
  763. \def\~#1{{\accent"7E #1}}
  764. \def\"#1{{\accent"7F #1}}
  765.  
  766. % LaTeX change: Make \t work in a moving argument.
  767. \def\pt#1{{\edef\next{\the\font}\the\textfont1\accent"7F\next#1}}
  768. \def\t{\protect\pt}
  769.  
  770. % LaTeX change: \kern\z@ added to end of \hrulefill and \dotfill
  771. % to make them work in `tabular' and `array' environments.
  772. % (Change made 24 July 1987).
  773. \def\hrulefill{\leaders\hrule\hfill\kern\z@}
  774. \def\dotfill{\cleaders\hbox{$\m@th \mkern1.5mu.\mkern1.5mu$}\hfill\kern\z@}
  775.  
  776. \def\rightarrowfill{$\m@th\mathord-\mkern-6mu%
  777.   \cleaders\hbox{$\mkern-2mu\mathord-\mkern-2mu$}\hfill
  778.   \mkern-6mu\mathord\rightarrow$}
  779. \def\leftarrowfill{$\m@th\mathord\leftarrow\mkern-6mu%
  780.   \cleaders\hbox{$\mkern-2mu\mathord-\mkern-2mu$}\hfill
  781.   \mkern-6mu\mathord-$}
  782. \mathchardef\braceld="37A \mathchardef\bracerd="37B
  783. \mathchardef\bracelu="37C \mathchardef\braceru="37D
  784. \def\downbracefill{$\m@th\braceld\leaders\vrule\hfill\braceru
  785.   \bracelu\leaders\vrule\hfill\bracerd$}
  786. \def\upbracefill{$\m@th\bracelu\leaders\vrule\hfill\bracerd
  787.   \braceld\leaders\vrule\hfill\braceru$}
  788.  
  789. % LaTeX change: \bye is eliminated.
  790. %\outer\def\bye{\par\vfill\supereject\end}
  791.  
  792. % Macros for math setting
  793. \message{math definitions,}
  794.  
  795. \let\sp=^ \let\sb=_
  796. \def\,{\mskip\thinmuskip}
  797. \def\>{\mskip\medmuskip}
  798. \def\;{\mskip\thickmuskip}
  799. \def\!{\mskip-\thinmuskip}
  800. \def\*{\discretionary{\thinspace\the\textfont2\char2}{}{}}
  801. {\catcode`\'=\active \gdef'{^\bgroup\prim@s}}
  802. \def\prim@s{\prime\futurelet\next\pr@m@s}
  803. \def\pr@m@s{\ifx'\next\let\nxt\pr@@@s \else\ifx^\next\let\nxt\pr@@@t
  804.   \else\let\nxt\egroup\fi\fi \nxt}
  805. \def\pr@@@s#1{\prim@s} \def\pr@@@t#1#2{#2\egroup}
  806. {\catcode`\^^Z=\active \gdef^^Z{\not=}} % ^^Z is like \ne in math
  807.  
  808. {\catcode`\_=\active \global\let_=\_} % _ in math is either subscript or \_
  809.  
  810. \mathchardef\alpha="010B
  811. \mathchardef\beta="010C
  812. \mathchardef\gamma="010D
  813. \mathchardef\delta="010E
  814. \mathchardef\epsilon="010F
  815. \mathchardef\zeta="0110
  816. \mathchardef\eta="0111
  817. \mathchardef\theta="0112
  818. \mathchardef\iota="0113
  819. \mathchardef\kappa="0114
  820. \mathchardef\lambda="0115
  821. \mathchardef\mu="0116
  822. \mathchardef\nu="0117
  823. \mathchardef\xi="0118
  824. \mathchardef\pi="0119
  825. \mathchardef\rho="011A
  826. \mathchardef\sigma="011B
  827. \mathchardef\tau="011C
  828. \mathchardef\upsilon="011D
  829. \mathchardef\phi="011E
  830. \mathchardef\chi="011F
  831. \mathchardef\psi="0120
  832. \mathchardef\omega="0121
  833. \mathchardef\varepsilon="0122
  834. \mathchardef\vartheta="0123
  835. \mathchardef\varpi="0124
  836. \mathchardef\varrho="0125
  837. \mathchardef\varsigma="0126
  838. \mathchardef\varphi="0127
  839. \mathchardef\Gamma="7000
  840. \mathchardef\Delta="7001
  841. \mathchardef\Theta="7002
  842. \mathchardef\Lambda="7003
  843. \mathchardef\Xi="7004
  844. \mathchardef\Pi="7005
  845. \mathchardef\Sigma="7006
  846. \mathchardef\Upsilon="7007
  847. \mathchardef\Phi="7008
  848. \mathchardef\Psi="7009
  849. \mathchardef\Omega="700A
  850.  
  851. \mathchardef\aleph="0240
  852. \def\hbar{{\mathchar'26\mkern-9muh}}
  853. \mathchardef\imath="017B
  854. \mathchardef\jmath="017C
  855. \mathchardef\ell="0160
  856. \mathchardef\wp="017D
  857. \mathchardef\Re="023C
  858. \mathchardef\Im="023D
  859. \mathchardef\partial="0140
  860. \mathchardef\infty="0231
  861. \mathchardef\prime="0230
  862. \mathchardef\emptyset="023B
  863. \mathchardef\nabla="0272
  864. \def\surd{{\mathchar"1270}}
  865. \mathchardef\top="023E
  866. \mathchardef\bot="023F
  867. \def\angle{{\vbox{\ialign{$\m@th\scriptstyle##$\crcr
  868.       \not\mathrel{\mkern14mu}\crcr
  869.       \noalign{\nointerlineskip}
  870.       \mkern2.5mu\leaders\hrule height.34pt\hfill\mkern2.5mu\crcr}}}}
  871. \mathchardef\triangle="0234
  872. \mathchardef\forall="0238
  873. \mathchardef\exists="0239
  874. \mathchardef\neg="023A \let\lnot=\neg
  875. \mathchardef\flat="015B
  876. \mathchardef\natural="015C
  877. \mathchardef\sharp="015D
  878. \mathchardef\clubsuit="027C
  879. \mathchardef\diamondsuit="027D
  880. \mathchardef\heartsuit="027E
  881. \mathchardef\spadesuit="027F
  882.  
  883. \mathchardef\coprod="1360
  884. \mathchardef\bigvee="1357
  885. \mathchardef\bigwedge="1356
  886. \mathchardef\biguplus="1355
  887. \mathchardef\bigcap="1354
  888. \mathchardef\bigcup="1353
  889. \mathchardef\intop="1352 \def\int{\intop\nolimits}
  890. \mathchardef\prod="1351
  891. \mathchardef\sum="1350
  892. \mathchardef\bigotimes="134E
  893. \mathchardef\bigoplus="134C
  894. \mathchardef\bigodot="134A
  895. \mathchardef\ointop="1348 \def\oint{\ointop\nolimits}
  896. \mathchardef\bigsqcup="1346
  897. \mathchardef\smallint="1273
  898.  
  899. \mathchardef\triangleleft="212F
  900. \mathchardef\triangleright="212E
  901. \mathchardef\bigtriangleup="2234
  902. \mathchardef\bigtriangledown="2235
  903. \mathchardef\wedge="225E \let\land=\wedge
  904. \mathchardef\vee="225F \let\lor=\vee
  905. \mathchardef\cap="225C
  906. \mathchardef\cup="225B
  907. \mathchardef\ddagger="227A
  908. \mathchardef\dagger="2279
  909. \mathchardef\sqcap="2275
  910. \mathchardef\sqcup="2274
  911. \mathchardef\uplus="225D
  912. \mathchardef\amalg="2271
  913. \mathchardef\diamond="2205
  914. \mathchardef\bullet="220F
  915. \mathchardef\wr="226F
  916. \mathchardef\div="2204
  917. \mathchardef\odot="220C
  918. \mathchardef\oslash="220B
  919. \mathchardef\otimes="220A
  920. \mathchardef\ominus="2209
  921. \mathchardef\oplus="2208
  922. \mathchardef\mp="2207
  923. \mathchardef\pm="2206
  924. \mathchardef\circ="220E
  925. \mathchardef\bigcirc="220D
  926. \mathchardef\setminus="226E % for set difference A\setminus B
  927. \mathchardef\cdot="2201
  928. \mathchardef\ast="2203
  929. \mathchardef\times="2202
  930. \mathchardef\star="213F
  931.  
  932. \mathchardef\propto="322F
  933. \mathchardef\sqsubseteq="3276
  934. \mathchardef\sqsupseteq="3277
  935. \mathchardef\parallel="326B
  936. \mathchardef\mid="326A
  937. \mathchardef\dashv="3261
  938. \mathchardef\vdash="3260
  939. \mathchardef\nearrow="3225
  940. \mathchardef\searrow="3226
  941. \mathchardef\nwarrow="322D
  942. \mathchardef\swarrow="322E
  943. \mathchardef\Leftrightarrow="322C
  944. \mathchardef\Leftarrow="3228
  945. \mathchardef\Rightarrow="3229
  946. \def\neq{\not=} \let\ne=\neq
  947. \mathchardef\leq="3214 \let\le=\leq
  948. \mathchardef\geq="3215 \let\ge=\geq
  949. \mathchardef\succ="321F
  950. \mathchardef\prec="321E
  951. \mathchardef\approx="3219
  952. \mathchardef\succeq="3217
  953. \mathchardef\preceq="3216
  954. \mathchardef\supset="321B
  955. \mathchardef\subset="321A
  956. \mathchardef\supseteq="3213
  957. \mathchardef\subseteq="3212
  958. \mathchardef\in="3232
  959. \mathchardef\ni="3233 \let\owns=\ni
  960. \mathchardef\gg="321D
  961. \mathchardef\ll="321C
  962. \mathchardef\not="3236
  963. \mathchardef\leftrightarrow="3224
  964. \mathchardef\leftarrow="3220 \let\gets=\leftarrow
  965. \mathchardef\rightarrow="3221 \let\to=\rightarrow
  966. \mathchardef\mapstochar="3237 \def\mapsto{\mapstochar\rightarrow}
  967. \mathchardef\sim="3218
  968. \mathchardef\simeq="3227
  969. \mathchardef\perp="323F
  970. \mathchardef\equiv="3211
  971. \mathchardef\asymp="3210
  972. \mathchardef\smile="315E
  973. \mathchardef\frown="315F
  974. \mathchardef\leftharpoonup="3128
  975. \mathchardef\leftharpoondown="3129
  976. \mathchardef\rightharpoonup="312A
  977. \mathchardef\rightharpoondown="312B
  978.  
  979. \def\joinrel{\mathrel{\mkern-3mu}}
  980. \def\relbar{\mathrel{\smash-}} % \smash, because - has the same height as +
  981. \def\Relbar{\mathrel=}
  982. \mathchardef\lhook="312C \def\hookrightarrow{\lhook\joinrel\rightarrow}
  983. \mathchardef\rhook="312D \def\hookleftarrow{\leftarrow\joinrel\rhook}
  984. \def\bowtie{\mathrel\triangleright\joinrel\mathrel\triangleleft}
  985. \def\models{\mathrel|\joinrel=}
  986. \def\Longrightarrow{\Relbar\joinrel\Rightarrow}
  987.  
  988. % LaTeX Change: \longrightarrow and \longleftarrow redefined to make
  989. %   then robust.
  990. \def\longrightarrow{\protect\@lra}
  991.   \def\@lra{\relbar\joinrel\rightarrow}
  992. \def\longleftarrow{\protect\@lla}
  993.    \def\@lla{\leftarrow\joinrel\relbar}
  994. % End of LaTeX change to \longrightarrow and \longleftarrow
  995.  
  996. \def\Longleftarrow{\Leftarrow\joinrel\Relbar}
  997. \def\longmapsto{\mapstochar\longrightarrow}
  998. \def\longleftrightarrow{\leftarrow\joinrel\rightarrow}
  999. \def\Longleftrightarrow{\Leftarrow\joinrel\Rightarrow}
  1000. \def\iff{\;\Longleftrightarrow\;}
  1001.  
  1002. \mathchardef\ldotp="613A % ldot as a punctuation mark
  1003. \mathchardef\cdotp="6201 % cdot as a punctuation mark
  1004. \mathchardef\colon="603A % colon as a punctuation mark
  1005.  
  1006. % LaTeX change: make \ldots work outside math mode too.
  1007. \def\@ldots{\mathinner{\ldotp\ldotp\ldotp}}
  1008. \def\ldots{\protect\pldots}
  1009. \def\pldots{\relax\ifmmode\@ldots\else\mbox{$\m@th\@ldots\,$}\fi}
  1010. % End of LaTeX change to \ldots
  1011.  
  1012. \def\cdots{\mathinner{\cdotp\cdotp\cdotp}}
  1013. \def\vdots{\vbox{\baselineskip4\p@ \lineskiplimit\z@
  1014.     \kern6\p@\hbox{.}\hbox{.}\hbox{.}}}
  1015. \def\ddots{\mathinner{\mkern1mu\raise7\p@\vbox{\kern7\p@\hbox{.}}\mkern2mu
  1016.     \raise4\p@\hbox{.}\mkern2mu\raise\p@\hbox{.}\mkern1mu}}
  1017.  
  1018. \def\acute{\mathaccent"7013 }
  1019. \def\grave{\mathaccent"7012 }
  1020. \def\ddot{\mathaccent"707F }
  1021. \def\tilde{\mathaccent"707E }
  1022. \def\bar{\mathaccent"7016 }
  1023. \def\breve{\mathaccent"7015 }
  1024. \def\check{\mathaccent"7014 }
  1025. \def\hat{\mathaccent"705E }
  1026. \def\vec{\mathaccent"017E }
  1027. \def\dot{\mathaccent"705F }
  1028. \def\widetilde{\mathaccent"0365 }
  1029. \def\widehat{\mathaccent"0362 }
  1030. \def\overrightarrow#1{\vbox{\m@th\ialign{##\crcr
  1031.       \rightarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
  1032.       $\hfil\displaystyle{#1}\hfil$\crcr}}}
  1033. \def\overleftarrow#1{\vbox{\m@th\ialign{##\crcr
  1034.       \leftarrowfill\crcr\noalign{\kern-\p@\nointerlineskip}
  1035.       $\hfil\displaystyle{#1}\hfil$\crcr}}}
  1036. \def\overbrace#1{\mathop{\vbox{\m@th\ialign{##\crcr\noalign{\kern3\p@}
  1037.       \downbracefill\crcr\noalign{\kern3\p@\nointerlineskip}
  1038.       $\hfil\displaystyle{#1}\hfil$\crcr}}}\limits}
  1039. \def\underbrace#1{\mathop{\vtop{\m@th\ialign{##\crcr
  1040.       $\hfil\displaystyle{#1}\hfil$\crcr\noalign{\kern3\p@\nointerlineskip}
  1041.       \upbracefill\crcr\noalign{\kern3\p@}}}}\limits}
  1042. \def\skew#1#2#3{{#2{#3\mkern#1mu}\mkern-#1mu}{}}
  1043.  
  1044. \def\lmoustache{\delimiter"437A340 } % top from (, bottom from )
  1045. \def\rmoustache{\delimiter"537B341 } % top from ), bottom from (
  1046. \def\lgroup{\delimiter"462833A } % extensible ( with sharper tips
  1047. \def\rgroup{\delimiter"562933B } % extensible ) with sharper tips
  1048. \def\arrowvert{\delimiter"26A33C } % arrow without arrowheads
  1049. \def\Arrowvert{\delimiter"26B33D } % double arrow without arrowheads
  1050. \def\bracevert{\delimiter"77C33E } % the vertical bar that extends braces
  1051. \def\Vert{\delimiter"26B30D } \let\|=\Vert
  1052. \def\vert{\delimiter"26A30C }
  1053. \def\uparrow{\delimiter"3222378 }
  1054. \def\downarrow{\delimiter"3223379 }
  1055. \def\updownarrow{\delimiter"326C33F }
  1056. \def\Uparrow{\delimiter"322A37E }
  1057. \def\Downarrow{\delimiter"322B37F }
  1058. \def\Updownarrow{\delimiter"326D377 }
  1059. \def\backslash{\delimiter"26E30F } % for double coset G\backslash H
  1060. \def\rangle{\delimiter"526930B }
  1061. \def\langle{\delimiter"426830A }
  1062. \def\rbrace{\delimiter"5267309 } \let\}=\rbrace
  1063. \def\lbrace{\delimiter"4266308 } \let\{=\lbrace
  1064. \def\rceil{\delimiter"5265307 }
  1065. \def\lceil{\delimiter"4264306 }
  1066. \def\rfloor{\delimiter"5263305 }
  1067. \def\lfloor{\delimiter"4262304 }
  1068.  
  1069. \def\bigl{\mathopen\big}
  1070. \def\bigm{\mathrel\big}
  1071. \def\bigr{\mathclose\big}
  1072. \def\Bigl{\mathopen\Big}
  1073. \def\Bigm{\mathrel\Big}
  1074. \def\Bigr{\mathclose\Big}
  1075. \def\biggl{\mathopen\bigg}
  1076. \def\biggm{\mathrel\bigg}
  1077. \def\biggr{\mathclose\bigg}
  1078. \def\Biggl{\mathopen\Bigg}
  1079. \def\Biggm{\mathrel\Bigg}
  1080. \def\Biggr{\mathclose\Bigg}
  1081. \def\big#1{{\hbox{$\left#1\vbox to8.5\p@{}\right.\n@space$}}}
  1082. \def\Big#1{{\hbox{$\left#1\vbox to11.5\p@{}\right.\n@space$}}}
  1083. \def\bigg#1{{\hbox{$\left#1\vbox to14.5\p@{}\right.\n@space$}}}
  1084. \def\Bigg#1{{\hbox{$\left#1\vbox to17.5\p@{}\right.\n@space$}}}
  1085. \def\n@space{\nulldelimiterspace\z@ \m@th}
  1086.  
  1087. \def\choose{\atopwithdelims()}
  1088. \def\brack{\atopwithdelims[]}
  1089. \def\brace{\atopwithdelims\{\}}
  1090.  
  1091. \def\sqrt{\radical"270370 }
  1092.  
  1093. \def\mathpalette#1#2{\mathchoice{#1\displaystyle{#2}}%
  1094.   {#1\textstyle{#2}}{#1\scriptstyle{#2}}{#1\scriptscriptstyle{#2}}}
  1095. \newbox\rootbox
  1096. \def\root#1\of{\setbox\rootbox\hbox{$\m@th\scriptscriptstyle{#1}$}
  1097.   \mathpalette\r@@t}
  1098. \def\r@@t#1#2{\setbox\z@\hbox{$\m@th#1\sqrt{#2}$}
  1099.   \dimen@\ht\z@ \advance\dimen@-\dp\z@
  1100.   \mkern5mu\raise.6\dimen@\copy\rootbox \mkern-10mu \box\z@}
  1101. \newif\ifv@ \newif\ifh@
  1102. \def\vphantom{\v@true\h@false\ph@nt}
  1103. \def\hphantom{\v@false\h@true\ph@nt}
  1104. \def\phantom{\v@true\h@true\ph@nt}
  1105. \def\ph@nt{\ifmmode\def\next{\mathpalette\mathph@nt}%
  1106.   \else\let\next\makeph@nt\fi\next}
  1107. \def\makeph@nt#1{\setbox\z@\hbox{#1}\finph@nt}
  1108. \def\mathph@nt#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finph@nt}
  1109. \def\finph@nt{\setbox\tw@\null
  1110.   \ifv@ \ht\tw@\ht\z@ \dp\tw@\dp\z@\fi
  1111.   \ifh@ \wd\tw@\wd\z@\fi \box\tw@}
  1112. \def\mathstrut{\vphantom(}
  1113. \def\smash{\relax % \relax, in case this comes first in \halign
  1114.   \ifmmode\def\next{\mathpalette\mathsm@sh}\else\let\next\makesm@sh
  1115.   \fi\next}
  1116. \def\makesm@sh#1{\setbox\z@\hbox{#1}\finsm@sh}
  1117. \def\mathsm@sh#1#2{\setbox\z@\hbox{$\m@th#1{#2}$}\finsm@sh}
  1118. \def\finsm@sh{\ht\z@\z@ \dp\z@\z@ \box\z@}
  1119.  
  1120. \def\cong{\mathrel{\mathpalette\@vereq\sim}} % congruence sign
  1121. \def\@vereq#1#2{\lower.5\p@\vbox{\baselineskip\z@skip\lineskip-.5\p@
  1122.     \ialign{$\m@th#1\hfil##\hfil$\crcr#2\crcr=\crcr}}}
  1123. \def\notin{\mathrel{\m@th\mathpalette\c@ncel\in}}
  1124. \def\c@ncel#1#2{\m@th\ooalign{$\hfil#1\mkern1mu/\hfil$\crcr$#1#2$}}
  1125. \def\rightleftharpoons{\mathrel{\mathpalette\rlh@{}}}
  1126. \def\rlh@#1{\vcenter{\m@th\hbox{\ooalign{\raise2pt
  1127.           \hbox{$#1\rightharpoonup$}\crcr
  1128.         $#1\leftharpoondown$}}}}
  1129. \def\buildrel#1\over#2{\mathrel{\mathop{\kern\z@#2}\limits^{#1}}}
  1130. \def\doteq{\buildrel\textstyle.\over=}
  1131.  
  1132. \def\log{\mathop{\rm log}\nolimits}
  1133. \def\lg{\mathop{\rm lg}\nolimits}
  1134. \def\ln{\mathop{\rm ln}\nolimits}
  1135. \def\lim{\mathop{\rm lim}}
  1136. \def\limsup{\mathop{\rm lim\,sup}}
  1137. \def\liminf{\mathop{\rm lim\,inf}}
  1138. \def\sin{\mathop{\rm sin}\nolimits}
  1139. \def\arcsin{\mathop{\rm arcsin}\nolimits}
  1140. \def\sinh{\mathop{\rm sinh}\nolimits}
  1141. \def\cos{\mathop{\rm cos}\nolimits}
  1142. \def\arccos{\mathop{\rm arccos}\nolimits}
  1143. \def\cosh{\mathop{\rm cosh}\nolimits}
  1144. \def\tan{\mathop{\rm tan}\nolimits}
  1145. \def\arctan{\mathop{\rm arctan}\nolimits}
  1146. \def\tanh{\mathop{\rm tanh}\nolimits}
  1147. \def\cot{\mathop{\rm cot}\nolimits}
  1148. \def\coth{\mathop{\rm coth}\nolimits}
  1149. \def\sec{\mathop{\rm sec}\nolimits}
  1150. \def\csc{\mathop{\rm csc}\nolimits}
  1151. \def\max{\mathop{\rm max}}
  1152. \def\min{\mathop{\rm min}}
  1153. \def\sup{\mathop{\rm sup}}
  1154. \def\inf{\mathop{\rm inf}}
  1155. \def\arg{\mathop{\rm arg}\nolimits}
  1156. \def\ker{\mathop{\rm ker}\nolimits}
  1157. \def\dim{\mathop{\rm dim}\nolimits}
  1158. \def\hom{\mathop{\rm hom}\nolimits}
  1159. \def\det{\mathop{\rm det}}
  1160. \def\exp{\mathop{\rm exp}\nolimits}
  1161. \def\Pr{\mathop{\rm Pr}}
  1162. \def\gcd{\mathop{\rm gcd}}
  1163. \def\deg{\mathop{\rm deg}\nolimits}
  1164.  
  1165. \def\bmod{\mskip-\medmuskip\mkern5mu
  1166.   \mathbin{\rm mod}\penalty900\mkern5mu\mskip-\medmuskip}
  1167. \def\pmod#1{\allowbreak\mkern18mu({\rm mod}\,\,#1)}
  1168.  
  1169. %% RmS 91/08/14 inserted extra braces around entry for NFSS
  1170. \def\cases#1{\left\{\,\vcenter{\normalbaselines\m@th
  1171.     \ialign{$##\hfil$&\quad{##}\hfil\crcr#1\crcr}}\right.}
  1172. \def\matrix#1{\null\,\vcenter{\normalbaselines\m@th
  1173.     \ialign{\hfil$##$\hfil&&\quad\hfil$##$\hfil\crcr
  1174.       \mathstrut\crcr\noalign{\kern-\baselineskip}
  1175.       #1\crcr\mathstrut\crcr\noalign{\kern-\baselineskip}}}\,}
  1176. \def\pmatrix#1{\left(\matrix{#1}\right)}
  1177. \newdimen\p@renwd
  1178.  
  1179. % LaTeX: following command is moved after the \tenex font is defined
  1180. %  by SFONTS
  1181. %\setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left (
  1182.  
  1183. \def\bordermatrix#1{\begingroup \m@th
  1184.   \setbox\z@\vbox{\def\cr{\crcr\noalign{\kern2\p@\global\let\cr\endline}}%
  1185.     \ialign{$##$\hfil\kern2\p@\kern\p@renwd&\thinspace\hfil$##$\hfil
  1186.       &&\quad\hfil$##$\hfil\crcr
  1187.       \omit\strut\hfil\crcr\noalign{\kern-\baselineskip}%
  1188.       #1\crcr\omit\strut\cr}}%
  1189.   \setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}%
  1190.   \setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}%
  1191.   \setbox\tw@\hbox{$\kern\wd\@ne\kern-\p@renwd\left(\kern-\wd\@ne
  1192.     \global\setbox\@ne\vbox{\box\@ne\kern2\p@}%
  1193.     \vcenter{\kern-\ht\@ne\unvbox\z@\kern-\baselineskip}\,\right)$}%
  1194.   \null\;\vbox{\kern\ht\@ne\box\tw@}\endgroup}
  1195.  
  1196. \def\openup{\afterassignment\@penup\dimen@=}
  1197. \def\@penup{\advance\lineskip\dimen@
  1198.   \advance\baselineskip\dimen@
  1199.   \advance\lineskiplimit\dimen@}
  1200.  
  1201. % LaTeX change: \eqalign eliminated, since it is replaced by the
  1202. % eqnarray environment.
  1203. %
  1204. %\def\eqalign#1{\null\,\vcenter{\openup\jot\m@th
  1205. %  \ialign{\strut\hfil$\displaystyle{##}$&$\displaystyle{{}##}$\hfil
  1206. %      \crcr#1\crcr}}\,}
  1207.  
  1208. \newif\ifdt@p
  1209. \def\displ@y{\global\dt@ptrue\openup\jot\m@th
  1210.   \everycr{\noalign{\ifdt@p \global\dt@pfalse
  1211.       \vskip-\lineskiplimit \vskip\normallineskiplimit
  1212.       \else \penalty\interdisplaylinepenalty \fi}}}
  1213. \def\@lign{\tabskip\z@skip\everycr{}} % restore inside \displ@y
  1214. \def\displaylines#1{\displ@y
  1215.   \halign{\hbox to\displaywidth{$\@lign\hfil\displaystyle##\hfil$}\crcr
  1216.     #1\crcr}}
  1217.  
  1218. % LaTeX: The following \eqalign type macros are eliminated, since
  1219. % they are replaced by the eqnarray environment.
  1220. %
  1221. %\def\eqalignno#1{\displ@y \tabskip\centering
  1222. %  \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip
  1223. %    &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering
  1224. %    &\llap{$\@lign##$}\tabskip\z@skip\crcr
  1225. %    #1\crcr}}
  1226. %\def\leqalignno#1{\displ@y \tabskip\centering
  1227. %  \halign to\displaywidth{\hfil$\@lign\displaystyle{##}$\tabskip\z@skip
  1228. %    &$\@lign\displaystyle{{}##}$\hfil\tabskip\centering
  1229. %    &\kern-\displaywidth\rlap{$\@lign##$}\tabskip\displaywidth\crcr
  1230. %    #1\crcr}}
  1231.  
  1232. % Definitions related to output
  1233.  
  1234. % LaTeX uses its own output routine
  1235. %
  1236. %\message{output routines,}
  1237. %
  1238. %\countdef\pageno=0 \pageno=1 % first page is number 1
  1239. %\newtoks\headline \headline={\hfil} % headline is normally blank
  1240. %\newtoks\footline \footline={\hss\tenrm\folio\hss}
  1241. %  % footline is normally a centered page number in font \tenrm
  1242. %\newif\ifr@ggedbottom
  1243. %\def\raggedbottom{\topskip 10\p@ plus60\p@ \r@ggedbottomtrue}
  1244. %\def\normalbottom{\topskip 10\p@ \r@ggedbottomfalse} % undoes \raggedbottom
  1245. %\def\folio{\ifnum\pageno<\z@ \romannumeral-\pageno \else\number\pageno \fi}
  1246. %\def\nopagenumbers{\footline{\hfil}} % blank out the footline
  1247. %\def\advancepageno{\ifnum\pageno<\z@ \global\advance\pageno\m@ne
  1248. %  \else\global\advance\pageno\@ne \fi} % increase |pageno|
  1249.  
  1250. % LaTeX does use the same insert for footnotes as PLAIN
  1251. \newinsert\footins
  1252.  
  1253. %\def\footnote#1{\let\@sf\empty % parameter #2 (the text) is read later
  1254. %  \ifhmode\edef\@sf{\spacefactor\the\spacefactor}\/\fi
  1255. %  #1\@sf\vfootnote{#1}}
  1256. %\def\vfootnote#1{\insert\footins\bgroup
  1257. %  \interlinepenalty\interfootnotelinepenalty
  1258. %  \splittopskip\ht\strutbox % top baseline for broken footnotes
  1259. %  \splitmaxdepth\dp\strutbox \floatingpenalty\@MM
  1260. %  \leftskip\z@skip \rightskip\z@skip \spaceskip\z@skip \xspaceskip\z@skip
  1261. %  \textindent{#1}\footstrut\futurelet\next\fo@t}
  1262. %\def\fo@t{\ifcat\bgroup\noexpand\next \let\next\f@@t
  1263. %  \else\let\next\f@t\fi \next}
  1264. %\def\f@@t{\bgroup\aftergroup\@foot\let\next}
  1265. %\def\f@t#1{#1\@foot}
  1266. %\def\@foot{\strut\egroup}
  1267. %\def\footstrut{\vbox to\splittopskip{}}
  1268.  
  1269. % LaTeX leaves these initializations for the \footins insert.
  1270. %
  1271. \skip\footins=\bigskipamount % space added when footnote is present
  1272. \count\footins=1000 % footnote magnification factor (1 to 1)
  1273. \dimen\footins=8in % maximum footnotes per page
  1274.  
  1275. %\newinsert\topins
  1276. %\newif\ifp@ge \newif\if@mid
  1277. %\def\topinsert{\@midfalse\p@gefalse\@ins}
  1278. %\def\midinsert{\@midtrue\@ins}
  1279. %\def\pageinsert{\@midfalse\p@getrue\@ins}
  1280. %\skip\topins=\z@skip % no space added when a topinsert is present
  1281. %\count\topins=1000 % magnification factor (1 to 1)
  1282. %\dimen\topins=\maxdimen % no limit per page
  1283. %\def\@ins{\par\begingroup\setbox\z@\vbox\bgroup} % start a \vbox
  1284. %\def\endinsert{\egroup % finish the \vbox
  1285. %  \if@mid \dimen@\ht\z@ \advance\dimen@\dp\z@ \advance\dimen@12\p@
  1286. %    \advance\dimen@\pagetotal \advance\dimen@-\pageshrink
  1287. %    \ifdim\dimen@>\pagegoal\@midfalse\p@gefalse\fi\fi
  1288. %  \if@mid \bigskip\box\z@\bigbreak
  1289. %  \else\insert\topins{\penalty100 % floating insertion
  1290. %    \splittopskip\z@skip
  1291. %    \splitmaxdepth\maxdimen \floatingpenalty\z@
  1292. %    \ifp@ge \dimen@\dp\z@
  1293. %    \vbox to\vsize{\unvbox\z@\kern-\dimen@}% depth is zero
  1294. %    \else \box\z@\nobreak\bigskip\fi}\fi\endgroup}
  1295.  
  1296. %\output{\plainoutput}
  1297. %\def\plainoutput{\shipout\vbox{\makeheadline\pagebody\makefootline}%
  1298. %  \advancepageno
  1299. %  \ifnum\outputpenalty>-\@MM \else\dosupereject\fi}
  1300. %\def\pagebody{\vbox to\vsize{\boxmaxdepth\maxdepth \pagecontents}}
  1301. %\def\makeheadline{\vbox to\z@{\vskip-22.5\p@
  1302. %  \line{\vbox to8.5\p@{}\the\headline}\vss}\nointerlineskip}
  1303. %\def\makefootline{\baselineskip24\p@\line{\the\footline}}
  1304. %\def\dosupereject{\ifnum\insertpenalties>\z@ % something is being held over
  1305. %  \line{}\kern-\topskip\nobreak\vfill\supereject\fi}
  1306. %
  1307. %\def\pagecontents{\ifvoid\topins\else\unvbox\topins\fi
  1308. %  \dimen@=\dp\@cclv \unvbox\@cclv % open up \box255
  1309. %  \ifvoid\footins\else % footnote info is present
  1310. %    \vskip\skip\footins
  1311. %    \footnoterule
  1312. %    \unvbox\footins\fi
  1313. %  \ifr@ggedbottom \kern-\dimen@ \vfil \fi}
  1314.  
  1315. % LaTeX keeps PLAIN TeX's \footnoterule as the default
  1316. %
  1317. \def\footnoterule{\kern-3\p@
  1318.   \hrule width 2truein \kern 2.6\p@} % the \hrule is .4pt high
  1319.  
  1320. % Hyphenation, miscellaneous macros, and initial values for standard layout
  1321. \message{hyphenation}
  1322.  
  1323. \lefthyphenmin=2 \righthyphenmin=3 % disallow x- or -xx breaks
  1324. \input lhyphen
  1325.  
  1326. % \magnification doesn't work in LaTeX
  1327. %
  1328. %\def\magnification{\afterassignment\m@g\count@}
  1329. %\def\m@g{\mag\count@
  1330. %  \hsize6.5truein\vsize8.9truein\dimen\footins8truein}
  1331.  
  1332. %% RmS 92/03/18: added \errorcontextlines=\maxdimen,
  1333. %%  suggested by J. Schrod  
  1334. \def\tracingall{\tracingcommands\tw@\tracingstats\tw@
  1335.   \tracingpages\@ne\tracingoutput\@ne\tracinglostchars\@ne
  1336.   \tracingmacros\tw@\tracingparagraphs\@ne\tracingrestores\@ne
  1337.   \showboxbreadth\maxdimen\showboxdepth\maxdimen\errorstopmode
  1338.   \errorcontextlines\maxdimen\tracingonline\@ne}
  1339.  
  1340. \def\showhyphens#1{\setbox0\vbox{\parfillskip\z@skip\hsize\maxdimen\tenrm
  1341.   \pretolerance\m@ne\tolerance\m@ne\hbadness0\showboxdepth0\ #1}}
  1342.  
  1343. % input SliTeX fonts and commands
  1344.  
  1345. %% Initialize \reset@font for use with Old font selection
  1346.  
  1347. \let\reset@font\empty
  1348.  
  1349. \input sfonts
  1350. \input latex
  1351. \input slitex
  1352.  
  1353. % LaTeX change: moved from above.
  1354. \setbox0=\hbox{\tenex B} \p@renwd=\wd0 % width of the big left (
  1355.  
  1356. % RmS 91/06/21: clear \box0
  1357. \setbox0=\box\voidb@x
  1358.  
  1359. % SliTeX: default values
  1360. \normalbaselines
  1361. % SliTeX: select 20pt font size and default style
  1362. \twentypt
  1363.  
  1364. \nonfrenchspacing % punctuation affects the spacing
  1365. \catcode`@=12 % at signs are no longer letters
  1366.  
  1367. % SliTeX: File called SPLAIN
  1368. % Identify the current format
  1369. \def\fmtname{splain}\def\fmtversion{2.09-March 18, 1992}
  1370.  
  1371. \typeout{Input any local modifications here.}
  1372.  
  1373. \endinput
  1374.